import Cookies from 'js-cookie';

/**
 * window.localStorage 浏览器永久缓存
 * @method set 设置永久缓存
 * @method get 获取永久缓存
 * @method remove 移除永久缓存
 * @method clear 移除全部永久缓存
 */
export const Local = {
	// 查看 v2.4.3版本更新日志
	setKey(key: string) {
		// @ts-ignore
		return `${__NEXT_NAME__}:${key}`;
	},
	// 设置永久缓存
	set<T>(key: string, val: T) {
		window.localStorage.setItem(Local.setKey(key), JSON.stringify(val));
	},
	// 获取永久缓存
	get(key: string) {
		let json = <string>window.localStorage.getItem(Local.setKey(key));
		return JSON.parse(json);
	},
	// 移除永久缓存
	remove(key: string) {
		window.localStorage.removeItem(Local.setKey(key));
	},
	// 移除全部永久缓存
	clear() {
		window.localStorage.clear();
	},
};

/**
 * window.sessionStorage 浏览器临时缓存
 * @method set 设置临时缓存
 * @method get 获取临时缓存
 * @method remove 移除临时缓存
 * @method clear 移除全部临时缓存
 */
export const Session = {
	// 设置临时缓存
	set(key: string, val: any) {
		if (key === 'token' || key === 'refresh_token') {
			Cookies.set(key, val);
		}
		window.sessionStorage.setItem(key, JSON.stringify(val));
	},
	// 获取临时缓存
	get(key: string) {
		if (key === 'token' || key === 'refresh_token') return Cookies.get(key);
		let json = <string>window.sessionStorage.getItem(key);
		return JSON.parse(json);
	},
	// 移除临时缓存
	remove(key: string) {
		if (key === 'token' || key === 'refresh_token') return Cookies.remove(key);
		window.sessionStorage.removeItem(key);
	},
	// 移除全部临时缓存
	clear() {
		Cookies.remove('token');
		Cookies.remove('refresh_token');
		Cookies.remove('tenantId');
		window.sessionStorage.clear();
	},
	// 获取当前存储的 token
	getToken() {
		return this.get('token');
	},
	// 获取当前的租户
	getTenant() {
		return Local.get('tenantId') ? Local.get('tenantId') : 1;
	},
};

// 获取名录车数据
import carListJson from '/@/assets/data/cart.json';
export const getCarList = () => {
	let carList = Local.get('directoryCarList');
	if (!carList) {
		let list: any[] = [];
		carListJson.forEach((cart) => {
			let xzqh = list.find((item) => item.value === cart.xzqh);
			if (xzqh) {
				let company = xzqh.children.find(
					(item) => item.value === cart['company_id'],
				);
				if (company) {
					let nowCart = company.children.find(
						(item) => item.value === cart['hphm'],
					);
					if (!nowCart) {
						company.children.push({
							label: cart.hphm,
							value: cart.hphm,
						});
					}
				} else {
					xzqh.children.push({
						label: cart['company_name'],
						value: cart['company_id'],
						children: [
							{
								label: cart.hphm,
								value: cart.hphm,
							},
						],
					});
				}
			} else {
				list.push({
					value: cart.xzqh,
					label: cart['xzqh_name'],
					children: [
						{
							label: cart['company_name'],
							value: cart['company_id'],
							children: [
								{
									label: cart.hphm,
									value: cart.hphm,
								},
							],
						},
					],
				});
			}
		});
		list.sort((a, b) => a.value - b.value);

		Local.set('directoryCarList', list);
		carList = list;
	}
	return carList;
};
